package com.sg.service.biz.bff.impl;

import com.sg.common.exception.Assert;
import com.sg.common.util.RedisUtil;
import com.sg.dto.biz.bff.req.BffImplementGiveGracePeriodTimeReqDto;
import com.sg.dto.biz.bff.req.BffImplementSingleContentGenReportTaskReqDto;
import com.sg.dto.biz.bff.req.BffImplementSingleContentReportTaskCompensateOrFillReportReqDto;
import com.sg.dto.biz.bff.res.BffImplementGiveGracePeriodTimeRespDto;
import com.sg.dto.biz.bff.res.BffImplementSingleContentGenReportTaskRespDto;
import com.sg.dto.biz.bff.res.BffImplementSingleContentReportTaskCompensateOrFillReportRespDto;
import com.sg.dto.integration.app.*;
import com.sg.service.biz.bff.ReportService;
import com.wicket.okrapp.integration.ReportService;
import com.wicket.okrapp.integration.SystemTestDomainService;
import org.apache.skywalking.apm.toolkit.trace.Tag;
import org.apache.skywalking.apm.toolkit.trace.Tags;
import org.apache.skywalking.apm.toolkit.trace.Trace;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @author ：
 * @version 1.0
 * @date ：
 */
@Service
public class ReportServiceImpl implements ReportService {

    @Resource
    private RedisUtil redisUtil;
    @Resource
    com.sg.service.biz.app.SystemTestDomainService fwAppSystemTestDomainClient;

    @Resource
    com.sg.service.biz.app.ReportService fwAppReportClient;

    /**
     * B3-执行单内容汇报任务补偿处理[7140]
     * gen by moon at 1/7/2024, 3:03:06 AM
     */
    @Trace(operationName = "B3-执行单内容汇报任务补偿处理")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    @Override
    public BffImplementSingleContentGenReportTaskRespDto implementSingleContentGenReportTask(BffImplementSingleContentGenReportTaskReqDto reqDto) {


        ImplementReportTaskOperateElementJudgeComRespDto implementReportTaskOperateElementJudgeComRespDto_1 = null;
//virtualUsage D3-执行汇报任务操作元素判断(公共)  44486
        ImplementReportTaskOperateElementJudgeComRespDto implementReportTaskOperateElementJudgeComRespDto = null;
        ImplementReportTaskOperateElementJudgeComReqDto implementReportTaskOperateElementJudgeComReqDto = new ImplementReportTaskOperateElementJudgeComReqDto();
        if (reqDto != null) {
            implementReportTaskOperateElementJudgeComReqDto.setEvaObjTargetCycleId(reqDto.getEvaObjTargetCycleId());//SimpleFieldAssign//sourceId:1022260_1_44486
            implementReportTaskOperateElementJudgeComReqDto.setCycleId(reqDto.getCycleId());//SimpleFieldAssign//sourceId:1022261_1_44486
            implementReportTaskOperateElementJudgeComReqDto.setTargetCycleContentId(reqDto.getTargetCycleContentId());//SimpleFieldAssign//sourceId:1015181_1_44486
            implementReportTaskOperateElementJudgeComReqDto.setEvaluationTemplateId(reqDto.getEvaluationTemplateId());//SimpleFieldAssign//sourceId:1015103_1_44486
        }

        /*D3-执行汇报任务操作元素判断(公共)[7147]   */
        Assert.isNull(implementReportTaskOperateElementJudgeComReqDto.getEvaObjTargetCycleId(), "B3-执行单内容汇报任务补偿处理-D3-执行汇报任务操作元素判断(公共)-被评对象目标周期ID不能为空", false);
        Assert.isNull(implementReportTaskOperateElementJudgeComReqDto.getCycleId(), "B3-执行单内容汇报任务补偿处理-D3-执行汇报任务操作元素判断(公共)-周期ID不能为空", false);
        Assert.isNull(implementReportTaskOperateElementJudgeComReqDto.getTargetCycleContentId(), "B3-执行单内容汇报任务补偿处理-D3-执行汇报任务操作元素判断(公共)-关联目标内容ID不能为空", false);
        Assert.isNull(implementReportTaskOperateElementJudgeComReqDto.getEvaluationTemplateId(), "B3-执行单内容汇报任务补偿处理-D3-执行汇报任务操作元素判断(公共)-冗余评价模板ID不能为空", false);
        implementReportTaskOperateElementJudgeComRespDto = fwAppSystemTestDomainClient.implementReportTaskOperateElementJudgeCom(implementReportTaskOperateElementJudgeComReqDto).getData()/*vcase invoke 跨dubbo调用;*/;


        implementReportTaskOperateElementJudgeComRespDto_1 = implementReportTaskOperateElementJudgeComRespDto;
        if ((reqDto != null && reqDto.getReportTaskOperation() != null)) {
            //if(B3-执行单内容汇报任务调度.汇报任务验证操作 值不等于空 )  44487

            ImplementSingleContentGenReportTaskComRespDto implementSingleContentGenReportTaskComRespDto = null;
            if (implementReportTaskOperateElementJudgeComRespDto != null) {
                ImplementSingleContentGenReportTaskComReqDto implementSingleContentGenReportTaskComReqDto = new ImplementSingleContentGenReportTaskComReqDto();
                if (reqDto != null) {
                    implementSingleContentGenReportTaskComReqDto.setReportTaskOperation(reqDto.getReportTaskOperation());//SimpleFieldAssign//sourceId:1015136_1_44488
                    implementSingleContentGenReportTaskComReqDto.setCycleId(reqDto.getCycleId());//SimpleFieldAssign//sourceId:1016595_1_44488
                    implementSingleContentGenReportTaskComReqDto.setEvaObjTargetCycleId(reqDto.getEvaObjTargetCycleId());//SimpleFieldAssign//sourceId:1015137_1_44488
                    implementSingleContentGenReportTaskComReqDto.setEvaluationTemplateId(reqDto.getEvaluationTemplateId());//SimpleFieldAssign//sourceId:1012685_1_44488
                }
                if (implementReportTaskOperateElementJudgeComRespDto != null) {
                    //     implementSingleContentGenReportTaskComReqDto.setExecuteCycleStageId(implementReportTaskOperateElementJudgeComRespDto.getExecuteCycleStageId());//SimpleFieldAssign//sourceId:1022320_1_44488
//implementSingleContentGenReportTaskComReqDto.setCycleStageDataId(implementReportTaskOperateElementJudgeComRespDto.getCycleStageDataId());//SimpleFieldAssign//sourceId:1025415_1_44488
                    implementSingleContentGenReportTaskComReqDto.setTaskId(implementReportTaskOperateElementJudgeComRespDto.getTaskId());//SimpleFieldAssign//sourceId:1025416_1_44488
                }

                /*D3-执行单内容汇报任务操作(公共)[7141]   */
                Assert.isNull(implementSingleContentGenReportTaskComReqDto.getCycleId(), "B3-执行单内容汇报任务补偿处理-D3-执行单内容汇报任务操作(公共)-周期ID不能为空", false);
                Assert.isNull(implementSingleContentGenReportTaskComReqDto.getEvaObjTargetCycleId(), "B3-执行单内容汇报任务补偿处理-D3-执行单内容汇报任务操作(公共)-被评对象目标周期ID不能为空", false);
                Assert.isNull(implementSingleContentGenReportTaskComReqDto.getEvaluationTemplateId(), "B3-执行单内容汇报任务补偿处理-D3-执行单内容汇报任务操作(公共)-冗余评价模板ID不能为空", false);
                implementSingleContentGenReportTaskComRespDto = fwAppReportClient.implementSingleContentGenReportTaskCom(implementSingleContentGenReportTaskComReqDto).getData()/*vcase invoke 跨dubbo调用;*/;


            }
        }
        BffImplementSingleContentGenReportTaskRespDto retData = new BffImplementSingleContentGenReportTaskRespDto();
        if (implementReportTaskOperateElementJudgeComRespDto_1 != null) {
            retData.setReportTaskCompElement(implementReportTaskOperateElementJudgeComRespDto_1.getReportTaskCompElement());//SimpleFieldAssign//sourceId:1015106_1
            retData.setReportTaskPlusSetElement(implementReportTaskOperateElementJudgeComRespDto_1.getReportTaskPlusSetElement());//SimpleFieldAssign//sourceId:1022262_1
        }


        return retData;
    }

    /**
     * B3执行给予宽限时间量[8282]
     * gen by moon at 1/6/2024, 11:51:57 PM
     */
    @Trace(operationName = "B3执行给予宽限时间量")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    @Override
    public BffImplementGiveGracePeriodTimeRespDto implementGiveGracePeriodTime(BffImplementGiveGracePeriodTimeReqDto reqDto) {


        //步骤0: D3执行给予宽限时间量(公共) - implementGiveGracePeriodTimeCom
        ImplementGiveGracePeriodTimeComRespDto implementGiveGracePeriodTimeComRespDto = null;
        ImplementGiveGracePeriodTimeComReqDto implementGiveGracePeriodTimeComReqDto = new ImplementGiveGracePeriodTimeComReqDto();
        if (reqDto != null) {
            implementGiveGracePeriodTimeComReqDto.setTaskId(reqDto.getTaskId());//SimpleFieldAssign//sourceId:1475294_1
            implementGiveGracePeriodTimeComReqDto.setTimeUnitType(reqDto.getTimeUnitType());//SimpleFieldAssign//sourceId:1475494_1
            implementGiveGracePeriodTimeComReqDto.setApplyDelayDays(reqDto.getApplyDelayDays());//SimpleFieldAssign//sourceId:1475295_1
            implementGiveGracePeriodTimeComReqDto.setReplenishDelayDays(reqDto.getReplenishDelayDays());//SimpleFieldAssign//sourceId:1475296_1
        }

        /*D3执行给予宽限时间量(公共)[8280]   */
        Assert.isNull(implementGiveGracePeriodTimeComReqDto.getTaskId(), "B3执行给予宽限时间量-D3执行给予宽限时间量(公共)-任务ID不能为空", false);
        Assert.isNull(implementGiveGracePeriodTimeComReqDto.getTimeUnitType(), "B3执行给予宽限时间量-D3执行给予宽限时间量(公共)-时间单位类型不能为空", false);
        implementGiveGracePeriodTimeComRespDto = fwAppReportClient.implementGiveGracePeriodTimeCom(implementGiveGracePeriodTimeComReqDto).getData()/*vcase invoke 跨dubbo调用;*/;


        BffImplementGiveGracePeriodTimeRespDto retData = new BffImplementGiveGracePeriodTimeRespDto();


        return retData;
    }

    /**
     * B3执行单内容汇报任务补偿或补报处理[7140]
     * gen by moon at 1/7/2024, 9:34:03 PM
     */
    @Trace(operationName = "B3执行单内容汇报任务补偿或补报处理")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    @Override
    public BffImplementSingleContentReportTaskCompensateOrFillReportRespDto implementSingleContentReportTaskCompensateOrFillReport(BffImplementSingleContentReportTaskCompensateOrFillReportReqDto reqDto) {


        //步骤0: D3-执行单内容汇报任务操作(公共) - implementSingleContentGenReportTaskCom
        ImplementSingleContentGenReportTaskComRespDto implementSingleContentGenReportTaskComRespDto = null;
        ImplementSingleContentGenReportTaskComReqDto implementSingleContentGenReportTaskComReqDto = new ImplementSingleContentGenReportTaskComReqDto();
        if (reqDto != null) {
            implementSingleContentGenReportTaskComReqDto.setReportTaskOperation(reqDto.getReportTaskOperation());//SimpleFieldAssign//sourceId:1015136_1
            implementSingleContentGenReportTaskComReqDto.setEvaObjTargetCycleId(reqDto.getEvaObjTargetCycleId());//SimpleFieldAssign//sourceId:1015137_1
            implementSingleContentGenReportTaskComReqDto.setCycleId(reqDto.getCycleId());//SimpleFieldAssign//sourceId:1016595_1
            implementSingleContentGenReportTaskComReqDto.setEvaluationTemplateId(reqDto.getEvaluationTemplateId());//SimpleFieldAssign//sourceId:1012685_1
            implementSingleContentGenReportTaskComReqDto.setTaskId(reqDto.getTaskId());//SimpleFieldAssign//sourceId:1475816_1
            implementSingleContentGenReportTaskComReqDto.setTimeUnitType(reqDto.getTimeUnitType());//SimpleFieldAssign//sourceId:1475509_1
            implementSingleContentGenReportTaskComReqDto.setReplenishDelayDays(reqDto.getReplenishDelayDays());//SimpleFieldAssign//sourceId:1475510_1
        }

        /*D3-执行单内容汇报任务操作(公共)[7141]   */
        Assert.isNull(implementSingleContentGenReportTaskComReqDto.getEvaObjTargetCycleId(), "B3执行单内容汇报任务补偿或补报处理-D3-执行单内容汇报任务操作(公共)-被评对象目标周期ID不能为空", false);
        Assert.isNull(implementSingleContentGenReportTaskComReqDto.getCycleId(), "B3执行单内容汇报任务补偿或补报处理-D3-执行单内容汇报任务操作(公共)-周期ID不能为空", false);
        Assert.isNull(implementSingleContentGenReportTaskComReqDto.getEvaluationTemplateId(), "B3执行单内容汇报任务补偿或补报处理-D3-执行单内容汇报任务操作(公共)-冗余评价模板ID不能为空", false);
        implementSingleContentGenReportTaskComRespDto = fwAppReportClient.implementSingleContentGenReportTaskCom(implementSingleContentGenReportTaskComReqDto).getData()/*vcase invoke 跨dubbo调用;*/;


        BffImplementSingleContentReportTaskCompensateOrFillReportRespDto retData = new BffImplementSingleContentReportTaskCompensateOrFillReportRespDto();


        return retData;
    }
    //
}
